/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gradius.Elementos;

import gradius.InterfaceGrafica.TelaGrafica;
import java.awt.Graphics2D;

/** Classe abstrata, base da herança do jogo
 * @author Eduardo
 */
public abstract class Elemento
{
    private Coordenada coordenada;
    private Coordenada tamanho;

    protected TelaGrafica tela;

    /** Construtor da classe Elemento
     * @param tela - Painel de desenho do jogo
     * @param coordX - Coordenada do elemento no eixo horizontal
     * @param coordY - Coordenada do elemento no eixo vertical
     * @param tamX - Largura em pixels do elemento no eixo horizontal
     * @param tamY - Largura em pixel do elemento no eixo vertical
     */
    public Elemento(TelaGrafica tela, int coordX, int coordY, int tamX, int tamY)
    {
        coordenada = new Coordenada(coordX,coordY);
        tamanho = new Coordenada(tamX,tamY);
        this.tela=tela;
    }

    /** Método que retorna as coordenadas do elemento
     * @return Coordenada - Coordenada do elemento
     */
    public Coordenada getElementoCoordenada()
    {
        Coordenada c = new Coordenada(0,0);
        c = (Coordenada)coordenada.clone();
        return c;
    }

    /** Método que retorna o tamanho do elemento
     * @return Coordenada - Tamanho do elemento
     */
    public Coordenada getElementoTamanho()
    {
        Coordenada t = new Coordenada(0,0);
        t = (Coordenada)tamanho.clone();
        return t;
    }

    /** Método que incrementa a coordenada do elemento, proporcionando o deslocamento
     * @param incX - Incremento da coordenada no eixo horizontal
     * @param incY - Incremento da coordenada no eixo vertical
     */
    public void incrementaElementoCoordenada(int incX, int incY)
    {
        coordenada.incrementaCoordenada(incX, incY);
    }

    /** Método que seta a coordenada do elemento
     *
     * @param x - Valor da coordenada que sera setada na coordenada do elemento no eixo horizontal
     * @param y - Valor da coordenada que sera setada na coordenada do elemento no eixo vertical
     */
    protected void setElementoCoordenada(int x ,int y)
    {
        this.coordenada.setCoordX(x);
        this.coordenada.setCoordY(y);
    }

    /** Método abstrato para desenhar nave
     *
     * @param g2 - Objeto Graphics2D para desenhar
     */
    public abstract void desenha(Graphics2D g2);

}
